package com.xjy.system.domain.vo;

import com.xjy.common.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xjy.system.domain.bo.SysCreditAdvanceChargeBo;
import com.xjy.system.domain.bo.SysLoanChargeBo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;


/**
 * 费用报销信息视图对象 sys_reimbursement
 *
 * @author xjy
 * @date 2022-02-10
 */
@Data
@ApiModel("费用报销信息视图对象")
public class SysReimbursementVo {

	private static final long serialVersionUID = 1L;

	/** 项目名称 */
	@Excel(name = "项目名称")
	@ApiModelProperty("项目名称")
	private String projName;

	/** 科目名称 */
	@Excel(name = "科目名称")
	@ApiModelProperty("科目名称")
	private String budgetName;

	/** 合同名称 */
	@Excel(name = "合同名称")
	@ApiModelProperty("合同名称")
	private String contractName;


	/** 结算项目名称 */
	@Excel(name = "结算项目名称")
	@ApiModelProperty("结算项目名称")
	private String resultProjName;


	/** 费用报销单据编号 */
	@Excel(name = "单据编号")
	@ApiModelProperty("单据编号")
	private String reimbursementNo;



	/** 关联单位 */
	@Excel(name = "报销单位")
	@ApiModelProperty("报销单位")
	private String affiliatedUnit;

	/** 关联单位 */
	@ApiModelProperty("报销单位")
	private Integer affiliatedUnitId;

	/** 关联个人 */
	@Excel(name = "报销人")
	@ApiModelProperty("报销人")
	private String affiliatedPerson;

	/** 关联个人 */
	@ApiModelProperty("报销人")
	private Integer affiliatedPersonId;

	/** 经办人 */
	@Excel(name = "经办人")
	@ApiModelProperty("经办人")
	private String handler;

	/** 费用部门 */
	@Excel(name = "费用部门")
	@ApiModelProperty("费用部门")
	private String expenseDept;
	/** 摘要 */
	@Excel(name = "摘要")
	@ApiModelProperty("摘要")
	private String abstracted;

	/** 报销金额 */
	@Excel(name = "报销金额(元)")
	@ApiModelProperty("报销金额(元)")
	private BigDecimal reimbAmt;

	/** 发票张数 */
	@Excel(name = "发票张数")
	@ApiModelProperty("发票张数")
	private Long invoiceNum;

	/** 发票影像：存文件路径 */
	@Excel(name = "发票影像")
	@ApiModelProperty("发票影像：存文件路径")
	private String image;
	/** 支付类别:0：支付报销，1：冲销借款，2：冲销预付 */
	@Excel(name = "支付类别:0：支付报销，1：冲销借款，2：冲销预付")
	@ApiModelProperty("支付类别:0：支付报销，1：冲销借款，2：冲销预付")
	private Integer payType;



	/** 支付方式0：现金，1：银行（默认：银行) */
	@Excel(name = "支付方式0：现金，1：银行" , readConverterExp = "支付方式0：现金，1：银行（默认：银行)")
	@ApiModelProperty("支付方式0：现金，1：银行（默认：银行)")
	private Integer reimbPayWay;

	@Excel(name = "借款冲销合计")
	@ApiModelProperty("关联个人借款单号冲销合计")
	private BigDecimal affiliatedOddNoAmt;

	@Excel(name = "预付冲销合计")
	@ApiModelProperty("关联预付账款单号冲销合计")
	private BigDecimal affiliatedUnitOddNoAmt;

	@Excel(name = "支付账户金额合计")
	@ApiModelProperty("支付账户金额合计")
	private BigDecimal reimbPayAmt;


	/** 报销支付账户名称 */
	@Excel(name = "账户名称")
	@ApiModelProperty("账户名称")
	private String reimbPayAccountName;
	/** 报销支付账户开户行 */
	@Excel(name = "账户开户行")
	@ApiModelProperty("账户开户行")
	private String reimbPayAccountBank;
	/** 报销支付账户号码 */
	@Excel(name = "账户号码")
	@ApiModelProperty("账户号码")
	private String reimbPayAccountNo;



	/**
	 * 对方银行账户名称
	 */
	@Excel(name = "对方账户名称")
	@ApiModelProperty("对方账户名称")
	private String colBankName;
	/**
	 * 对方银行账户开户行
	 */
	@Excel(name = "对方银行账户开户行")
	@ApiModelProperty("对方银行账户开户行")
	private String colBank;

	/**
	 * 对方银行账户号码
	 */
	@Excel(name = "对方账户号码")
	@ApiModelProperty("对方账户号码")
	private String colBankNo;

	@ApiModelProperty("报销日期")
	@Excel(name = "报销日期")
	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
	private Date createTime;

	/** 审核状态 0：未审核（默认）；1：审核 */
	@Excel(name = "审核状态", readConverterExp = "false=未审核,true=已审核,")
	@ApiModelProperty("审核状态 0：未审核（默认）；1：审核")
	private Boolean auditStatus;


	/** 费用报销ID */
	@ApiModelProperty("费用报销ID")
	private Long id;

	/** 项目id */
	@ApiModelProperty("项目id")
	private Long projId;


	/** 合同ID */
	@ApiModelProperty("合同ID")
	private Long contractId;



	/** 结算项目id */
	@ApiModelProperty("结算项目id")
	private Long resultProjId;




	/** 预算科目ID */
	@ApiModelProperty("预算科目ID")
	private Long budgetId;



	/** 经办人id */
	@ApiModelProperty("经办人id")
	private Long handlerId;

	/** 代办标识0：无代办；1：代办。默认0 */
	@ApiModelProperty("代办标识0：无代办；1：代办。默认0")
	private Integer agencyLogo;


	@ApiModelProperty("费用部门ID")
	private Long expenseDeptId;









	/** 影像名称 */
	@ApiModelProperty("影像名称")
	private String imageName;

	/** 影像文件上传时间 */
	@ApiModelProperty("影像文件上传时间")
	private Date uploadTime;






	/** 支付账户账户ID */
	@ApiModelProperty("支付账户账户ID")
	private Long reimbPayAccountId;





	/** 备注 */
	@ApiModelProperty("备注")
	private String remark;





	//支付类别:0：支付报销，1：冲销借款，2：冲销预付
	@ApiModelProperty("冲销借款单据集合")
	private List<SysLoanChargeBo> loanList;


	//支付类别:0：支付报销，1：冲销借款，2：冲销预付
	@ApiModelProperty("冲销预付款单据集合")
	private List<SysCreditAdvanceChargeBo> advanceList;

}
